<?php
class Helper_DataControl
{
	public $x;
	/**
	 * 
	 * @param $ControlID select 控件的id
	 * @param $obj_array 
	 * @param $field_value
	 * @param $field_text
	 * @param $default_value
	 * @param $default_text $default_text 默认的文本
	 * @param $appendOptions 增加的一些选项
	 * #param $appendStyles 数组的数组， select的一些样式
	 * @return unknown_type
	 */
	public function DropDownList($ControlID, $obj_array,
		$field_value, $field_text, $default_value="", $default_text="",
		$appendOptions=array(), $appendStyles=array())
	{
		$strcategory .= '<select id="'.$ControlID.'" name="'.$ControlID.'"
			onchange="return _func_changetext_'.$ControlID.'();" style="';
		
		//die($field_value);
		//die(var_dump($appendStyles));
		foreach($appendStyles as $key=>$val){
			if( is_array($val) == false ){
				$strcategory .= $key.":".$val.";";
			} else {
				$strcategory .= $val[0].":".$val[1].";";
			}
		}
		
		$strcategory .= '">';
		//die($strcategory);
		//设置默认值
		if(!is_array($appendOptions)){
			$appendOptions = explode(',', $appendOptions);
		}
		foreach($appendOptions as $val)
		{
			if(!is_array($val)){
				$temp = explode('^', $val);
			} else {
				$temp = $val;
			}
			
			if( count($temp) == 1) {
				$temp[1] = "";
			}
			
			if( count($temp) == 2) {
				$temp[2] = "0";
			}
			
			$strcategory .= $this->DropDownListOption($temp[1], $temp[0], (bool)($temp[2]));
		}
		
		$strcategory .= $this->DropDownListOptions( $obj_array, $field_value, $field_text, $default_value);
		$strcategory .= '</select>
							<input type="hidden" id="'.$ControlID.'_Text" name="'.$ControlID.'_Text" value="'.$default_text.'" />
							<script type="text/javascript">
							function _func_changetext_'.$ControlID.'()
							{
								$("#'.$ControlID.'_Text").val( $.trim($("#'.$ControlID.' option:selected").text().replace(/\|/gi,"").replace(/　/gi, "")));
							}
							</script>';
		return $strcategory;
	}
	/**
	 * 下拉选项生成函数
	 * @param $obj_array 对象数组
	 * @param $field_value 二维数组,格式为array("分隔符", array("字段一名^字段值前附加字符串^字段值后附加字符串",..."字段n名^字段值前附加字符串^字段值后附加字符串") )（建议，仅用一个字段的字符串表示其value，或者是以逗号分隔的很多字段名的字符串）
	 * @param $field_text  二维数组,格式为array("分隔符", array("字段一名^字段值前附加字符串^字段值后附加字符串",..."字段n名^字段值前附加字符串^字段值后附加字符串") )（建议，仅用一个字段的字符串表示其text，或者是以逗号分隔的很多字段名的字符串）
	 * @param $default_value :数组（不建议，但允许是字符串，或者是以逗号分隔的很多默认值的字符串）
	 * @return unknown_type
	 */
	public function DropDownListOptions( $obj_array, $field_value, $field_text, $default_value="") {
		if( count($obj_array) < 0 || $obj_array == "0"){
			return "";
		}
		$ddl = "";
		$selected_text = "";
		$temp_text = "";
		
		//die(var_dump($field_text));
		//设置值信息
		if( !is_array($field_value)){
			$field_value = array("", explode(',',$field_value));
		}
		//die(var_dump($field_value[1]));
		$temp_count = count($field_value[1]);
		$temp_count_sub = 0;
		
		for($j=0; $j<$temp_count; $j++)
		{
			if( !is_array($field_value[1][$j])){
				$field_value[1][$j] = explode('^',$field_value[1][$j]);
			}
			
			$temp_count_sub = count($field_value[1][$j]);
			for($i=$temp_count_sub; $i<3; $i++){
				$field_value[1][$j][$i] = "";
			}
		}
		
		//设置显示文本
		if( !is_array($field_text)){
			$field_text = array("", explode(',',$field_text));
		}
		$temp_count = count($field_text[1]);
		//die(var_dump($field_text));
		for($j=0; $j<$temp_count; $j++)
		{
			if( !is_array($field_text[1][$j])){
				$field_text[1][$j] = explode('^',$field_text[1][$j]);
			}
			$temp_count_sub = count($field_text[1][$j]);
			for($i=$temp_count_sub; $i<3; $i++){
				$field_text[1][$j][$i] = "";
			}
		}
		
		//die(var_dump($field_text));
		
		$text_separator = $field_text[0];
		$text_separator_min = 1;
		$text_separator_max = count($field_text[1]);
		
		$value_separator = $field_value[0];
		$value_separator_min = 1;
		$value_separator_max = count($field_value[1]);
		
		//设置默认值
		if(!is_array($default_value)){
			$default_value = explode(',',$default_value);
		}
		
		//循环拼出HTML代码
		foreach( $obj_array as $obj ){
			$iSeparator = 1;
			
			$ddl .= '<option value="';
			
			//循环拼值
			$value_separator_min = 1;
			foreach($field_value[1] as $val){
				$func_value = "".$val[0];
				$ddl .= $val[1].$obj->$func_value.$val[2];
				if( $value_separator_min != $value_separator_max){
					$ddl .= $value_separator;
				}
				$value_separator_min ++;
			}
			$ddl .= '"';
			
			//处理默认值
			if( in_array($obj->$func_value, $default_value)){
				$ddl .= ' selected="selected"';
			}
			
			$ddl .= '>';
			//循环拼文本
			$temp_text = "";
			$text_separator_min = 1;
			foreach($field_text[1] as $val){
				$func_text = "".$val[0];
				$temp_text .= $val[1].$obj->$func_text.$val[2];
				if( $text_separator_min != $text_separator_max){
					$temp_text .= $text_separator;
				}
				$text_separator_min ++;
			}
			
			//处理默认值
			if( in_array($obj->$func_value, $default_value)){
				$selected_text = $temp_text;
			}
			$ddl .= $temp_text;
			
			$ddl .= '</option>'.chr(13);
		}
		return $ddl;
	}
	
	/**
	 * 复选框生成函数
	 * @param $obj_array 对象数组
	 * @param $field_value 二维数组,格式为array("分隔符", array("字段一名",..."字段n名") )（建议，仅用一个字段的字符串表示其value，或者是以逗号分隔的很多字段名的字符串）
	 * @param $field_text  二维数组,格式为array("分隔符", array("字段一名",..."字段n名") )（建议，仅用一个字段的字符串表示其text，或者是以逗号分隔的很多字段名的字符串）
	 * @param $name 复选框名称， 输入只是名称，将会被转成数组格式
	 * @param $id 复选框的ID：此id是指字段名称字符串，该字段的值会被加在复选框名称的后面，形成独立的ID的
	 * @param $column_number 列的数量, 二维数组， 第一个元素是列数，第二个元素是每一列长度的数组
	 * @param $default_value :数组（不建议，但允许是字符串，或者是以逗号分隔的很多默认值的字符串）
	 * @Param $enabled: 是否可用
	 * @return unknown_type
	 */
	public function CheckBox( $obj_array, $field_value, $field_text, $name, $id, $column_number=1, $default_value="", $enabled=true, $showItemsIfUnanabled=false) {
		if( count($obj_array) < 0 || $obj_array == "0"){
			return "";
		}
		
		//设置列数及每列长度
		if( is_array($column_number) == false ){
			for($i=0; $i< $column_number; $i++){
				if( $i != 0){
					$column_number_width .= ",";
				}
				$column_number_width .= floor(100/$column_number)."%";
			}
			$column_number = array($column_number, $column_number_width);
		}
		
		if( is_array($column_number[1]) == false ){
			$column_number[1] = explode(",", $column_number[1]);
		}
		
		//die(var_dump($column_number));
		
		$ddl = "<table class=\"formList\" cellpadding=\"0px\" cellspacing=\"0px\">";
		
		if( $enabled != true){
			$enbled_type = ' disabled="disabled"';
		}

		$func_id = $id;
		$iRows = 1;
		$iTotal = count($obj_array);
		
		
		//设置值信息
		if( !is_array($field_value)){
			$field_value = array("", explode(',',$field_value));
		}
		
		//设置显示文本
		if( !is_array($field_text)){
			$field_text = array("", explode(',',$field_text));
		}
		$text_separator = $field_text[0];
		$text_separator_min = 1;
		$text_separator_max = count($field_text[1]);
		
		$value_separator = $field_value[0];
		$value_separator_min = 1;
		$value_separator_max = count($field_value[1]);
		
		//设置默认值
		if(is_array($default_value)==false){
			$default_value = explode(',',$default_value);
		}
		
		//循环拼出HTML代码
		
		foreach( $obj_array as $obj ){
			$iSeparator = 1;
			$temp_checkbox = "";
			
			if( $iRows % $column_number[0] == 1){
				$temp_checkbox .= "<tr>";
			}
			
			$temp_checkbox .= '<td class="noHeight noBorder" style="height:auto; line-height:100%;';
			
			
		//	die($column_number[1][$i % $column_number[0]-1].']');
			
			//判断长度
			$column_number_index = $iRows % $column_number[0];
			if( $column_number_index==0 ){
				$column_number_index = $column_number[0];
			}
			
			if( count($column_number[1]) >= $column_number_index
				&& trim($column_number[1][$column_number_index-1]) != "" ){
				$temp_checkbox .= ' width: '.$column_number[1][$column_number_index-1].';';
			}
			
		//	die($temp_checkbox);
			
			$temp_checkbox .= '"><input type="checkbox"'.$enbled_type.' value="';
			//循环拼值
			$value_separator_min = 1;
			foreach($field_value[1] as $val){
				$func_value = $val;
				$temp_checkbox .= $obj->$func_value;
				if( $value_separator_min != $value_separator_max){
					$temp_checkbox .= $value_separator;
				}
				$value_separator_min ++;
			}
			
			$temp_checkbox .= '"';
			if( is_array($default_value)
				&& in_array($obj->$func_value, $default_value)){
				$temp_checkbox .= ' checked="true"';				
			} else if( $enabled == false && $showItemsIfUnanabled == false){
				continue;
			}
			$temp_checkbox .= ' name="'.$name.'[]" id="'.$name.'_'.$obj->$func_id.'" />';
			
			
			
			//循环拼文本
			$temp_checkbox .= '<label for="'.$name.'_'.$obj->$func_id.'">';
			$text_separator_min = 1;
			foreach($field_text[1] as $val){
				$func_text = $val;
				$temp_checkbox .= $obj->$func_text;
				$default_name = $obj->$func_text;
				if( $text_separator_min != $text_separator_max){
					$temp_checkbox .= $text_separator;
					$default_name .= $text_separator;
				}
				$text_separator_min ++;
			}
			
			$temp_checkbox .= "</label>
			<input type='hidden' id=".$name."_".$obj->$func_id."_T name=".$name."_".$obj->$func_id."_T value='".$default_name."' />
			</td>";
			
			$temp_checkbox .= chr(13);
			
			if( $iRows % $column_number[0] == 0 || $iRows == $iTotal){
				if( $iRows % $column_number[0] != 0){
					for($i=0; $i<($column_number[0]-$iRows % $column_number[0]); $i++){
						$temp_checkbox .= '<td style="';
						if( count($column_number[1]) >= $column_number_index
							&& trim($column_number[1][$column_number_index-1]) != "" ){
							$temp_checkbox .= ' width: '.$column_number[1][$column_number_index-1].';';
						}
						$temp_checkbox .= '">&nbsp;</td>';
					}
				}
			
				$temp_checkbox .= "</tr>";
			}
			$ddl .= $temp_checkbox;
			$iRows++;
		}
		$ddl .= "</table>";
		//die($ddl);
		return $ddl;
	}

	/**
	 * 单独下拉选项增加函数
	 * @param $default_value
	 * @param $default_text
	 * @param $isDefault
	 * @return unknown_type
	 */
	public function DropDownListOption( $default_value, $default_text, $isDefault=false ) {
		$ddl = '<option value="'.$default_value.'"';
		if( $isDefault ){
			$ddl .= ' selected="selected"';
		}
		$ddl .= '>'.$default_text.'</option>'.chr(13);
		return $ddl;
	}
	
	/**
	 * 时间生成函数
	 * @param $default_value :默认值， 00:00 格式，半个时一算，其他无效
	 * @return unknown_type
	 */
	public function DropDownListTime($default_value){
		$ddl = "";
		$ddlTime = "";
		
		for($i=0; $i< 48; $i++){
			if( $i % 2 == 1){
				$ddlTime = str_pad((($i-1)/2), 2, '0', STR_PAD_LEFT).":30";
			} else {
				$ddlTime = str_pad(($i/2), 2, '0',STR_PAD_LEFT).":00";
			}
			$ddl .= '<option value="'.$ddlTime.'"';
			
			
			if( $ddlTime == $default_value){
				$ddl .= ' selected="true"';
			}
			
			$ddl .= '>'.$ddlTime.'</option>'.chr(13);
		}
		
		
		return $ddl;
	}
	
	public function DropDownListYear($id, $previousMonth=false)
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		
		$year = date('Y');
		$start =  2005;
		
		if( $previousMonth == true && intval(date('m'))== 1){
			$year--;
		}
		//
		for($i=$start; $i<=$year; $i++)
		{
			$ddl .= '<option value="'.$i.'"';

			if( $i == $year ){
				$ddl .= ' selected';
			}
			$ddl .= '>'.$i.'</option>';
		}
		
		$ddl .= '</select>';
		return $ddl;
	}
	
	public function DropDownListYears($id, $start, $length, $select='')
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		$len = $start + $length;
		for($i=$start; $i<=$len; $i++)
		{
			$ddl .= '<option value="'.$i.'"';
			if($i == $select)
			{
				$ddl .= ' selected';
			}
			$ddl .= '>'.$i.'</option>';
		}
		$ddl .= '</select>';
		return $ddl;
	}
	
	public function DropDownListMonths($id, $select='')
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		for($i=1;$i<=12;$i++)
		{
			$month = str_pad($i, 2, "0", STR_PAD_LEFT);
			$ddl .= '<option value="'.$month.'"';
			if($select == $i)
			{
				$ddl .= ' selected';
			}
			$ddl .= '>'.$month.'</option>';
		}
		$ddl .= '</select>';
		return $ddl;
	}
	
	public function DropDownListWeek($id, $select='')
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		for($i=0;$i<=6;$i++)
		{
			switch ($i){
				case 0:
					$month = __("Sunday");
					break;
				case 1:
					$month = __("Monday");
					break; 
				case 2:
					$month = __("Tuesday");
					break; 
				case 3:
					$month = __("Wednesday");
					break; 
				case 4:
					$month = __("Thursday");
					break; 
				case 5:
					$month = __("Friday");
					break; 
				case 6:
					$month = __("Saturday");
					break;
			}
			$ddl .= '<option value="'.$i.'"';
			if($select == $i)
			{
				$ddl .= ' selected';
			}
			$ddl .= '>'.$month.'</option>';
		}
		$ddl .= '</select>';
		return $ddl;
	}
	
	public function DropDownListMonth($id, $previousMonth=false)
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		
		$month = intval(date('m'));
		
		if( $previousMonth == true ){
			if( $month== 1 ){
				$month = 12;
			} else {
				$month--;
			}
		}
		  
		for($i=1; $i<=12; $i++)
		{
			$ddl .= '<option value="'.str_pad($i, 2, "0", STR_PAD_LEFT).'"';

			if( $i == $month ){
				$ddl .= ' selected';
			}
			$ddl .= '>'.str_pad($i, 2, "0", STR_PAD_LEFT).'</option>';
		}
		
		$ddl .= '</select>';
		
		return $ddl;
	}
	
	
	public function DropDownListHour($id, $selectHour="", $MonthType=0)
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		
		if( $selectHour == ""){
			$selectHour = intval(date('H'));
			
			if( $MonthType == -1 ){
				if( $selectHour== 0 ){
					$selectHour = 23;
				} else {
					$selectHour--;
				}
			} else if( $MonthType == 1 ){
				if( $selectHour== 23 ){
					$selectHour = 0;
				} else {
					$selectHour++;
				}
			}
		}
		  
		for($i=0; $i<=23; $i++)
		{
			$ddl .= '<option value="'.str_pad($i, 2, "0", STR_PAD_LEFT).'"';

			if( $i == $selectHour ){
				$ddl .= ' selected';
			}
			$ddl .= '>'.str_pad($i, 2, "0", STR_PAD_LEFT).'</option>';
		}
		
		$ddl .= '</select>';
		
		return $ddl;
	}
	
	public function DropDownListMinute($id, $selectMinute="", $MonthType=0, $MontSlack=10)
	{
		$ddl = '<select name="'.$id.'" id="'.$id.'">';
		
		if( $selectMinute =="" ){
			$selectMinute = floor(intval(date('i'))/$MontSlack)*$MontSlack;
			//die(var_dump($selectMinute));
			
			if( $MonthType == -1 ){
				if( $selectMinute== $MontSlack ){
					$selectMinute = 60-$MontSlack;
				} else {
					$selectMinute--;
				}
			} else if( $MonthType == 1 ){
				if( $selectMinute== (60-$MontSlack) ){
					$selectMinute = 0;
				} else {
					$selectMinute +=$MontSlack;
				}
			}
		}
		  
		for($i=1; $i<=ceil(60/$MontSlack); $i++)
		{
			$ddl .= '<option value="'.str_pad(($i-1)*$MontSlack, 2, "0", STR_PAD_LEFT).'"';

			if( ($i-1)*$MontSlack == $selectMinute ){
				$ddl .= ' selected';
			}
			$ddl .= '>'.str_pad(($i-1)*$MontSlack, 2, "0", STR_PAD_LEFT).'</option>';
		}
		
		$ddl .= '</select>';
		
		return $ddl;
	}
}
?>